package com.alu.sort;

/**
 * 选择排序
 * 
 * 从第一个数开始依次与每次循环的第一个数比较，小就交换到第一个去
 * 循环遍历整个数组完成排序
 * 
 * @author Administrator
 *
 */
public class SelectSort extends AbstractSort {
	@Override
	public void sort(Comparable[] a) {
		for(int i=0; i<a.length; i++) {
			// 最小的数字的索引
			int min = i;
			for(int j=i+1; j<a.length; j++) {
				// 如果当前数字比之前最小的数字还小，那么将最小的数字的索引指向当前数字
				if(this.less(a[j], a[min])) {
					min = j;
				}
			}
			// 将最小的数字交换到开头
			this.exch(a, i, min);
		}
		this.show(a);
	}
}
